set(datafiles
  macos4.json
  ios4.json
  tvos4.json
  watchos4.json
  overlay4.json
  macos42.json
  ios42.json
  tvos42.json
  watchos42.json
  overlay42.json
)
set(SWIFTLIB_DIR
    "${CMAKE_BINARY_DIR}/${CMAKE_CFG_INTDIR}/lib/swift")
set(output_dir "${SWIFTLIB_DIR}/migrator")

add_custom_command(
    OUTPUT "${output_dir}"
    COMMAND ${CMAKE_COMMAND} "-E" "make_directory" "${output_dir}")

set(outputs)

foreach(input ${datafiles})
  set(source "${CMAKE_CURRENT_SOURCE_DIR}/${input}")
  set(dest "${output_dir}/${input}")
  if(CMAKE_SYSTEM_NAME STREQUAL Windows)
    set(CMAKE_SYMLINK_COMMAND copy)
  else()
    set(CMAKE_SYMLINK_COMMAND create_symlink)
  endif()

  add_custom_command(OUTPUT
                       "${output_dir}/${input}"
                     DEPENDS
                       "${CMAKE_CURRENT_SOURCE_DIR}/${input}"
                     COMMAND
                       "${CMAKE_COMMAND}" "-E" "${CMAKE_SYMLINK_COMMAND}" "${source}" "${dest}")
  list(APPEND outputs "${output_dir}/${input}")
endforeach()
list(APPEND outputs "${output_dir}")

add_custom_target("symlink_migrator_data"
    DEPENDS "${output_dir}" "${outputs}"
    COMMENT "Symlinking migrator data to ${output_dir}")

swift_install_in_component(FILES ${datafiles}
                           DESTINATION "lib/swift/migrator"
                           COMPONENT compiler)

add_swift_host_library(swiftMigrator STATIC
  APIDiffMigratorPass.cpp
  EditorAdapter.cpp
  FixitApplyDiagnosticConsumer.cpp
  Migrator.cpp
  MigrationState.cpp
  OptionalTryMigratorPass.cpp
  RewriteBufferEditsReceiver.cpp)
target_link_libraries(swiftMigrator PRIVATE
  swiftIDE
  swiftSyntax)

add_dependencies(swiftMigrator
  "symlink_migrator_data")
